#include <iostream>
#include <SDL/SDL.h>
#include <SDL_mixer.h>
#include "Sprite.h"
#include "Animacao.h"
#include "Video.h"
#include "Audio.h"
#include "EfeitoSonoro.h"
#include "Relogio.h"
#include "MapaTeclas.h"
#include "constantes.h"

#ifndef _HEROI_H_
#define _HEROI_H_

using namespace std;

typedef enum
{
andando, parado
}tipoEstado;

typedef enum
{
direita, esquerda, cima, baixo
}tipoPosicao;


class Heroi: public Sprite
{
   private:

   /*atributos*/
   SDL_Rect *origAux;   /*Armazena a próxima posição da imagem, no arquivo de imagens do Sprite, a ser exibido na tela
                        É atualizado sempre que o método processaTeclas é executado*/
   tipoEstado estado;
   tipoPosicao posicao;

   Animacao *animacaoAtual; /*Animações corrente do sprite*/

   /*Efeitos sonoros*/
   EfeitoSonoro *passos;

   public:

   void setOrigAux(Sint16 _x,Sint16 _y,Uint16 _w,Uint16 _h);
   tipoEstado getEstado(void);
   void parar(void);
   void andarDireita(void);
   void andarEsquerda(void);
   void andarCima(void);
   void andarBaixo(void);

   void processaTeclas(MapaTeclas *tecla,Audio *audio);
   void blitHeroi();

   Heroi(string nomeArquivo,Video *video, Audio *audio, Relogio *relogio, Sint16 orig_x, Sint16 orig_y, Uint16 orig_w, Uint16 orig_h, float dest_x, float dest_y, Uint16 dest_w, Uint16 dest_h);
   ~Heroi(void);

};

#endif

